package plus.easydo.starter.mybatis.plus.config;

import net.sf.jsqlparser.expression.Expression;
import net.sf.jsqlparser.schema.Column;

import java.util.List;

/**
 * @author laoyu
 * @version 1.0
 */
public interface MybatisPlusCustomService {

    /**
     * 获取租户id的表达式
     *
     * @return Expression
     * @author laoyu
     */
    Expression getTenantId();

    /**
     * 获取租户id字段
     *
     * @return java.lang.String
     * @author laoyu
     */
    default String getTenantIdColumn(){
        return null;
    }

    /**
     * 根据表名判断是否忽略拼接多租户条件
     *
     * @param tableName tableName
     * @return boolean
     * @author laoyu
     */
    default Result ignoreTable(String tableName){
        //默认不实现，优先走配置文件
        return null;
    }

    /**
     * 忽略插入租户字段逻辑
     *
     * @param columns 插入语句的字段集合
     * @param tenantIdColumn 租户字段
     * @return boolean
     * @author laoyu
     */
    default Result ignoreInsert(List<Column> columns, String tenantIdColumn){
        //默认不实现，优先走配置文件
        return null;
    }
}
